;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;//BORRA MODELOS NO ELEGIDOS///////////////////////////////////////////////////////////////////////////////////
;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;BORRAR PORTATILES QUE NO TENGAN EL DISCO EN EL INTERVALO DADO
(defrule borrar-modelos-disco-no-incluido
	?modelo <- (fase borrar-modelos-disco-no-incluido)
	?minimo <- (minimo ?discoMin)
	?maximo <- (maximo ?discoMax)
	=> 
	;;MOSTRAR CARACTERISTICAS
	(retract ?modelo)
	(retract ?minimo)
	(retract ?maximo)
	(bind ?result (run-query* obtener-portatiles))
	(while (?result next)
		(bind ?port (?result getObject port))
		(if(or(< ?port.disco ?discoMin)(> ?port.disco ?discoMax)) then
				(modify ?port (seleccionado FALSE))
		)
	)
)



;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;//BUSQUEDA POR DISCO//////////////////////////////////////////////////////////
;;/////////////////////////////////////////////////////////////////////////////////////////////////////// 
(defrule busqueda-por-disco
   ?fase <- (fase busqueda-por-caracteristica 4)
=>
	( printout t "--------------Seleccione el disco que desea: ---------------------" crlf )
	( printout t "1. De 150-250 GB " crlf )
	( printout t "2. De 250 a 400 GB " crlf )
	( printout t "3. De 400 a 550 GB " crlf )
	(assert (disco (read)) ) 
)
		;;//SELECCION NO VALIDA////////////////////////////////////////////////////
		(defrule seleccion-discos-erronea
			?fase <- (fase busqueda-por-caracteristica 4)
			?eleccion <- (disco ?numero)
			(test (or (not(integerp ?numero))
				(< ?numero 1)
				(> ?numero 3) 
				))  	
			=>
			(retract ?fase ?eleccion )
			(assert (fase busqueda-por-caracteristica 4) )
			(printout t "La opcion elegida no es valida." crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
		)

		;;//SELECCION VALIDA////////////////////////////////////////////////////
		(defrule seleccion-discos-correcta
			?fase <- (fase busqueda-por-caracteristica 4)
			?eleccion <- (disco ?numero)
			(test (and (integerp ?numero)
				(> ?numero 0)
				(< ?numero 4) 
			))  
			=>
			(retract ?fase ?eleccion)
			(assert (fase mostrar-PCs-por-disco ?numero))

			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
		)
		
		
		;;//PORTATILES ENTRE 150 a 250 GB////////////////////////////////////////////////////
		(defrule mostrar-Portatiles-precios1
			?fase <- (fase mostrar-PCs-por-disco 1) 
		=>
			(retract ?fase)
			(assert (minimo 150))
			(assert (maximo 250))
			(assert (criterio (texto Disco_entre_150_y_250GB)))
			(assert (fase borrar-modelos-disco-no-incluido))
		)
		
		;;//PORTATILES ENTRE 250 a 400 GB////////////////////////////////////////////////////
		(defrule mostrar-Portatiles-precios2
			?fase <- (fase mostrar-PCs-por-disco 2) 
		=>
			(retract ?fase)
			(assert (minimo 250))
			(assert (maximo 400))
			(assert (criterio (texto Disco_entre_250_y_400GB)))
			(assert (fase borrar-modelos-disco-no-incluido))
		)

		;;//PORTATILES ENTRE 400 a 500 GB////////////////////////////////////////////////////
		(defrule mostrar-Portatiles-precios3
			?fase <- (fase mostrar-PCs-por-disco 3) 
		=>
			(retract ?fase)
			(assert (minimo 400))
			(assert (maximo 500))
			(assert (criterio (texto Disco_entre_400_y_500GB)))
			(assert (fase borrar-modelos-disco-no-incluido))
		)